package cn.hbu.zlfw.job.service;

import java.util.Date;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import cn.hbu.zlfw.common.util.PropertiesUtil;
import cn.hbu.zlfw.job.dao.MessageHandlerDao;
import cn.hbu.zlfw.job.entity.ShortMessage;

/**
 * 
 *@ClassName:MessageHandleServiceImpl.java
 *@Description:  短信业务处理Service实现类
 *@Author:lxt<839376636@qq.com>
 *@Date:2017年10月6日下午6:42:58
 *@Version:1.1.0
 */
@Service("messageHandler")
@Transactional
public class MessageHandlerService{
	/**
	 * 日志
	 */
	public final Logger logger = LoggerFactory.getLogger(MessageHandlerService.class);
	
	private static final String PATH = "/short_message.properties";
	//短信验证码失效时间
	private static final String OUT_TIME = PropertiesUtil.getInstance().loadProperties(PATH, "outTime");
	
	@Autowired
	private MessageHandlerDao messageHandlerDao;
	
	/**
	 * 
	 * @Title: messageHandle 
	 * @Description: 定时任务每15s执行一次；fixedDelay参数指定毫秒数
	 */
	@Scheduled(fixedDelay=150000000)
	public void messageHandler() {
	    logger.debug("短信验证码清除,定时任务开始执行...");
		//获取表中所有的短信
	 	List<ShortMessage> messages = (List<ShortMessage>) messageHandlerDao.findAll();
	 	for (ShortMessage message : messages) {
		 	Date outTime = new Date(message.getCreateTime().getTime()+ Integer.parseInt(OUT_TIME));
			Date now = new Date();
			//已过十分钟，删除
			boolean flag = outTime.before(now);
			if(flag){
				logger.debug("发给手机号《{}》的验证码《{}》已超时，被删除！",message.getPhoneNumber(),message.getCode());
				//删除超时短信验证码:假删除
				message.setDelState(1);
//				this.messageHandlerDao.delete(message);
			}
		}
	 	logger.debug("短信验证码清除,定时任务结束执行...");
	}
	
  /**
    * 
    * @Title: messageHandler2 
    * @Description: 指定时间执行任务,没10秒执行一次
    * cron几种格式：
    * "0 0 12 * * ?"    	每天中午十二点触发 
	* "0 15 10 ? * *"    	每天早上10：15触发 
	* "0 15 10 * * ?"    	每天早上10：15触发 
	* "0 15 10 * * ? *"     每天早上10：15触发 
	* "0 15 10 * * ? 2005"  2005年的每天早上10：15触发 
	* "0 *  14 * * ?"       每天从下午2点开始到2点59分每分钟一次触发 
	* "0 0/5 14 * * ?"      每天从下午2点开始到2：55分结束每5分钟一次触发 
	* "0 0/5 14,18 * * ?"   每天的下午2点至2：55和6点至6点55分两个时间段内每5分钟一次触发 
	* "0 0-5 14 * * ?"    	每天14:00至14:05每分钟一次触发 
	* "0 10,44 14 ? 3 WED"  三月的每周三的14：10和14：44触发 
	* "0 15 10 ? * MON-FRI" 每个周一、周二、周三、周四、周五的10：15触发 
    */
	@Scheduled(cron="0/10 * * * * ?")
	public void messageHandler2() {
		logger.debug("短信业务2-处理逻辑开始...");
		logger.debug("短信业务2-处理逻辑结束...");
	}
	
	
}
